namespace SmartMathLibrary.Geometry
{
    /// <summary>
    /// An interface to implement an Arc.
    /// </summary>
    public interface IArc
    {
        /// <summary>
        /// Gets or sets the radius of the arc.
        /// </summary>
        /// <value>The radius of the arc.</value>
        double Radius { get; set; }

        /// <summary>
        /// Gets or sets the center of the arc.
        /// </summary>
        /// <value>The center of the arc.</value>
        Point2D Center { get; set; }

        /// <summary>
        /// Gets or sets the angle of the arc.
        /// </summary>
        /// <value>The angle of the arc.</value>
        double Angle { get; set; }

        /// <summary>
        /// Copies the current instance of an arc object.
        /// </summary>
        /// <returns>A copy of the current instance.</returns>
        Arc Copy();

        /// <summary>
        /// Compares the current instance of an arc to another.
        /// </summary>
        /// <param name="compare">The arc to compare.</param>
        /// <returns>True if the arcs are even otherwise, false.</returns>
        bool CompareTo(Arc compare);
    }
}